﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Dominio;
using Servicios;


namespace EstadisticaProduce.Acuicultura
{
    public partial class frmSemillaCompradaMes : System.Web.UI.Page
    {
        clsAcuicultura _consultas = new clsAcuicultura();
        string err_mens = string.Empty;
        Int32 iresultado = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                hdnperiodo.Value = "201112";
                hdncodempresa.Value = "00001";
                hdncodestablecimiento.Value = "1";

                hdncodregistrosemilla.Value = "0";
                hdnaccion.Value = string.Empty;

                txtPeriodo.Text = hdnperiodo.Value;

                cargaEspecie(-1);
                cargaEstadio(0);
                cargaPaises();
                cargaMoneda();
                cargaEmpresaDestino();
                cargaGrilla();
               }
        }

        private void cargaGrilla() {

            decimal COD_REGISTROSEMILLA = -1;
            string COD_EMPRESA = hdncodempresa.Value;

            Hashtable ht = new Hashtable();
            ht.Add("COD_REGISTROSEMILLA", COD_REGISTROSEMILLA);
            ht.Add("COD_EMPRESA", COD_EMPRESA);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
            lst = _consultas.ListaSemillaCompra(ht);
            if (lst.Count() == 0)
            {
                pnlMensaje.Visible = true;
                lblMensaje.Text = "Aún no se han registrado datos";
            }
            else
            {
                pnlMensaje.Visible = false;
                lblMensaje.Text = string.Empty;

                gvRegistro.DataSource = lst;
                gvRegistro.DataBind();
            }
            
        }
        
         private void cargaMoneda() {
            string COD_MONEDA = "%";
            string DES_MONEDA = string.Empty;

            Hashtable ht = new Hashtable();
            ht.Add("COD_MONEDA", COD_MONEDA);
            ht.Add("DES_MONEDA", DES_MONEDA);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
            lst = _consultas.ListaMoneda(ht);
            ddlTipoMoneda.DataSource = lst;
            ddlTipoMoneda.DataTextField = "destipomoneda";
            ddlTipoMoneda.DataValueField = "codtipomoneda";
            ddlTipoMoneda.DataBind();

            Utilidades.DropDownListAnnadir(ref ddlTipoMoneda, "0", "- Seleccione -", 0);

        }

         private void cargaEmpresaDestino() {
             decimal COD_EMPRESASEMILLA = -1;
             string DES_EMPRESASEMILLA = string.Empty;
             string COD_PAIS = ddlPais.SelectedItem.Value;

             Hashtable ht = new Hashtable();
             ht.Add("COD_EMPRESASEMILLA", COD_EMPRESASEMILLA);
             ht.Add("DES_EMPRESASEMILLA", DES_EMPRESASEMILLA);
             ht.Add("COD_PAIS", COD_PAIS);

             List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
             lst = _consultas.ListaEmpresaSemilla(ht);
             ddlEmpresaVende.DataSource = lst;
             ddlEmpresaVende.DataTextField = "desempresavende";
             ddlEmpresaVende.DataValueField = "codempresavende";
             ddlEmpresaVende.DataBind();

             Utilidades.DropDownListAnnadir(ref ddlEmpresaVende, "0", "- Seleccione -", 0);
         
         }

        private void cargaEstadio(decimal _COD_ESPECIE)
        {
            decimal COD_ESTADIO = -1;
            string DES_ESTADIO = string.Empty;
            decimal COD_ESPECIE = _COD_ESPECIE;

            Hashtable ht = new Hashtable();
            ht.Add("COD_ESTADIO", COD_ESTADIO);
            ht.Add("DES_ESTADIO", DES_ESTADIO);
            ht.Add("COD_ESPECIE", COD_ESPECIE);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
            lst = _consultas.ListaEstadios(ht);
            ddlEstadio.DataSource = lst;
            ddlEstadio.DataTextField = "des_estadio";
            ddlEstadio.DataValueField = "cod_estadio";
            ddlEstadio.DataBind();

            Utilidades.DropDownListAnnadir(ref ddlEstadio, "0", "- Seleccione -", 0);

        }

        private void cargaEspecie(decimal _cod_tipo_especie)
        {

            decimal cod_especie = -1;
            decimal cod_tipo_especie = _cod_tipo_especie;
            string des_especie = string.Empty;
            string cod_empresa = "00001";
            Hashtable ht = new Hashtable();
            ht.Add("cod_especie", cod_especie);
            ht.Add("cod_tipo_especie", cod_tipo_especie);
            ht.Add("des_especie", des_especie);
            ht.Add("cod_empresa", cod_empresa);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();

            lst = _consultas.ListaEspecies(ht);
            ddlEspecie.DataSource = lst;
            ddlEspecie.DataTextField = "desespecie";
            ddlEspecie.DataValueField = "codespecie";
            ddlEspecie.DataBind();
            Utilidades.DropDownListAnnadir(ref ddlEspecie, "0", "- Seleccione", 0);
        }

        private void cargaPaises()
        {
            string COD_PAIS = "%";
            string DES_PAIS = "%";

            Hashtable ht = new Hashtable();
            ht.Add("COD_PAIS", COD_PAIS);
            ht.Add("DES_PAIS", DES_PAIS);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
            lst = _consultas.ListaPaisCompraSemilas(ht);
            ddlPais.DataSource = lst;
            ddlPais.DataTextField = "despais";
            ddlPais.DataValueField = "codpais";
            ddlPais.DataBind();
            Utilidades.DropDownListAnnadir(ref ddlPais, "0", "- Seleccione", 0);

        }

        private void cargaGrillaVacia()
        {
            domConsultasGenerales en = new domConsultasGenerales();
            en.codempresa = "";
            List<domConsultasGenerales> _datos = new List<domConsultasGenerales>();
            _datos.Add(en);

            gvRegistro.DataSource = _datos;
            gvRegistro.DataBind();
            gvRegistro.Rows[0].Cells[0].Text = "";
        }

        #region Eventos: Eventos Controles


        protected void ddlEspecie_SelectedIndexChanged(object sender, EventArgs e)
        {
            decimal dTipo = Convert.ToDecimal(ddlEspecie.SelectedItem.Value);
            cargaEstadio(dTipo);
        }

        #endregion

        protected void btnGraba_Click(object sender, EventArgs e)
        {
            string saccion = hdnaccion.Value;
            decimal COD_REGISTROSEMILLA = Convert.ToDecimal(hdncodregistrosemilla.Value);
            string COD_EMPRESA = hdncodempresa.Value;
            decimal COD_ESPECIE = Convert.ToDecimal(ddlEspecie.SelectedItem.Value);
            decimal COD_ESTADIO = Convert.ToDecimal(ddlEstadio.SelectedItem.Value);
            decimal NUM_TALLAPROMEDIO = Convert.ToDecimal(txtTallaPromedio.Text);
            decimal CAN_PESOPROMEDIO = Convert.ToDecimal(txtCantidad.Text);
            decimal CAN_SEMILLA = Convert.ToDecimal(txtCantidad.Text);
            decimal VOL_SEMILLA = Convert.ToDecimal(txtVolumen.Text);
            string COD_MONEDA = ddlTipoMoneda.SelectedItem.Value;
            decimal VAL_SEMILLA = Convert.ToDecimal(txtValor.Text);
            decimal VAL_TIPOCAMBIO = Convert.ToDecimal(txtTipoCambio.Text);
            decimal COD_EMPRESASEMILLA = Convert.ToDecimal( ddlEmpresaVende.SelectedItem.Value);
            string COD_PERIODO = hdnperiodo.Value;
            iresultado = 0;

            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_REGISTROSEMILLA", COD_REGISTROSEMILLA);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_PERIODO", COD_PERIODO);
                ht.Add("COD_ESPECIE", COD_ESPECIE);
                ht.Add("COD_ESTADIO", COD_ESTADIO);
                ht.Add("NUM_TALLAPROMEDIO", NUM_TALLAPROMEDIO);
                ht.Add("CAN_PESOPROMEDIO", CAN_PESOPROMEDIO);
                ht.Add("CAN_SEMILLA", CAN_SEMILLA);
                ht.Add("VOL_SEMILLA", VOL_SEMILLA);
                ht.Add("VAL_TIPOCAMBIO", VAL_TIPOCAMBIO);
                ht.Add("VAL_SEMILLA", VAL_SEMILLA);
                ht.Add("COD_MONEDA", COD_MONEDA);
                ht.Add("COD_EMPRESASEMILLA", COD_EMPRESASEMILLA);

                if (hdncodregistrosemilla.Value != string.Empty && saccion == "EDITAR")
                {
                    iresultado = _consultas.ActualizaSemillaCompra(ht);
                    err_mens = "La compra se editó correctamente.";
                }
                else
                {
                    iresultado = _consultas.InsertaSemillaCompra(ht);
                    err_mens = "La compra se registró correctamente.";
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    err_mens = "Se registro la compra correctamente";
                    limpiaFormulario();
                    cargaGrilla();
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
            }
        }

        private void limpiaFormulario() {

            hdncodregistrosemilla.Value = "0";
            hdnaccion.Value = string.Empty;

            txtTallaPromedio.Text = string.Empty; ;
            txtPesoPromedio.Text = string.Empty; ;
            txtVolumen.Text = string.Empty; ;
            txtValor.Text = string.Empty; ;
            txtTipoCambio.Text = string.Empty; ;
            txtCantidad.Text = string.Empty; ;
            
            cargaEspecie(-1);
            cargaEstadio(0);

            Utilidades.DropDownListSelectValue(ref ddlEspecie, "0");
            Utilidades.DropDownListSelectValue(ref ddlPais, "0");
            Utilidades.DropDownListSelectValue(ref ddlEstadio, "0");
            Utilidades.DropDownListSelectValue(ref ddlEmpresaVende, "0");
            Utilidades.DropDownListSelectValue(ref ddlTipoMoneda, "0");
        }

        protected void gvRegistro_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "x_edit" || e.CommandName == "x_delete")
                {
                    GridViewRow row = (GridViewRow)((Control)e.CommandSource).Parent.Parent;
                    int Index = row.RowIndex;

                    if (e.CommandName == "x_edit")
                    {
                        /*
                         * DataKeys:
                         * cod_registro_semilla,cod_empresa,codperiodo,codespecie,desespecie,
                         * cod_tipo_especie,des_tipo_especie,cod_estadio,des_estadio,tallapromedio,
                         * pesopromedio,volumen_semilla,cantidad,codtipomoneda,destipomoneda,
                         * valor_semilla,tipocambio,codpais,despais,codempresavende,desempresavende
                         */
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_registro_semilla = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_registro_semilla"]);
                        be.cod_empresa = gvRegistro.DataKeys[Index].Values["cod_empresa"].ToString();
                        be.codespecie = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codespecie"]);
                        be.cod_estadio = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_estadio"]);
                        be.tallapromedio = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["tallapromedio"]);
                        be.volumen_semilla = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["volumen_semilla"]);
                        be.codpais = gvRegistro.DataKeys[Index].Values["codpais"].ToString();
                        be.codempresavende = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codempresavende"]);
                        be.valor_semilla = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["valor_semilla"]);
                        be.codtipomoneda = gvRegistro.DataKeys[Index].Values["codtipomoneda"].ToString();
                        be.pesopromedio = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["pesopromedio"]);
                        be.tipocambio = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["tipocambio"]);
                        be.cantidad = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cantidad"]);

                        limpiaFormulario();
                        cargaFormulario(be);
                    }
                    else
                    {
                        //--ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "Aviso", "alert('Seguro :P');", true);
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_registro_semilla = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_registro_semilla"]);
                        be.cod_empresa = gvRegistro.DataKeys[Index].Values["cod_empresa"].ToString();

                        eliminaRegistro(be);
                    }
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.StackTrace.ToString();
            }
        }

        private void eliminaRegistro(domConsultasGenerales _be)
        {
            decimal COD_REGISTROSEMILLA = _be.cod_registro_semilla;
            string COD_EMPRESA = _be.cod_empresa;
            Int32 iresultado = 0;

            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_REGISTROSEMILLA", COD_REGISTROSEMILLA);
                ht.Add("COD_EMPRESA", COD_EMPRESA);

                iresultado = _consultas.EliminaSemillaCompra(ht);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }

            finally {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    err_mens = "Se eliminó el registro correctamente";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                    limpiaFormulario();
                    cargaGrilla();
                }
            }
            
            
        }

        private void cargaFormulario(domConsultasGenerales _be) {

            hdnaccion.Value = "EDITAR";
            hdncodregistrosemilla.Value = _be.cod_registro_semilla.ToString();
            decimal COD_ESPECIE = Convert.ToDecimal(ddlEspecie.SelectedItem.Value);
            decimal COD_ESTADIO = Convert.ToDecimal(ddlEstadio.SelectedItem.Value);
            
            cargaEspecie(-1);
            Utilidades.DropDownListSelectValue(ref ddlEspecie, _be.codespecie.ToString());
            cargaEstadio(_be.codespecie);
            Utilidades.DropDownListSelectValue(ref ddlEstadio, _be.cod_estadio.ToString());
            Utilidades.DropDownListSelectValue(ref ddlEmpresaVende, _be.codempresavende.ToString());
            Utilidades.DropDownListSelectValue(ref ddlPais, _be.codpais);
            Utilidades.DropDownListSelectValue(ref ddlTipoMoneda, _be.codtipomoneda);
            Utilidades.DropDownListSelectValue(ref ddlEmpresaVende, _be.codempresavende.ToString());

            txtTallaPromedio.Text = _be.tallapromedio.ToString();
            txtPesoPromedio.Text = _be.pesopromedio.ToString();
            txtVolumen.Text = _be.volumen_semilla.ToString();
            txtValor.Text = _be.valor_semilla.ToString();
            txtTipoCambio.Text = _be.tipocambio.ToString();
            txtCantidad.Text = _be.cantidad.ToString();

            cargaEmpresaDestino();
            
        
        }

        protected void btnLimpia_Click(object sender, EventArgs e)
        {
            limpiaFormulario();
        }

        protected void ddlPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            cargaEmpresaDestino();
        }
    }
}